Алана Золоева, Егор Дулесов, София Лазарева, Анна Федотова, Ксения Сливкина
Нашей задачей было создание рекомендательных систем, основанных на разных методах: content-based и коллаборативная фильтрация. Эти системы должны помогать пользователям выбирать фильмы согласно их предпочтениям.
Наша content-based рекомендация основывается на схожести фильмов по 4 переменным. Это актеры, режиссеры, язык, на котором фильм доступен на хостинговой платформе, а также жанры.
Мы построили вторую рекомендательную систему, основанную на методе коллаборативной фильтрации, а именно методе UBCF, так как после оценки система, построенная данным методом, оказалась более точной, чем IBCF система.
Идея нашей рекомендательной системы и ее итоговый вид основывались на логике и пользовательском опыте участников команды, а также на последующих проверках адекватности путем нашей оценки и оценки привлеченных для помощи сторонних, незаинтересованных людей.
В контексте сетового анализа мы изучали следующие переменные:
## [1] 9
Получаем 9 сообществ
## В 1 группе 106 фильмов
## В 2 группе 92 фильмов
## В 3 группе 222 фильмов
## В 4 группе 115 фильмов
## В 5 группе 5 фильмов
## В 6 группе 7 фильмов
## В 7 группе 4 фильмов
## В 8 группе 1 фильмов
## В 9 группе 1 фильмов
## [1] 27
Получаем 27 сообществ
## В 1 группе 29 фильмов
## В 2 группе 34 фильмов
## В 3 группе 30 фильмов
## В 4 группе 2 фильмов
## В 5 группе 2 фильмов
## В 6 группе 345 фильмов
## В 7 группе 3 фильмов
## В 8 группе 8 фильмов
## В 9 группе 25 фильмов
## В 10 группе 4 фильмов
## В 11 группе 18 фильмов
## В 12 группе 4 фильмов
## В 13 группе 5 фильмов
## В 14 группе 16 фильмов
## В 15 группе 10 фильмов
## В 16 группе 2 фильмов
## В 17 группе 3 фильмов
## В 18 группе 1 фильмов
## В 19 группе 1 фильмов
## В 20 группе 1 фильмов
## В 21 группе 1 фильмов
## В 22 группе 1 фильмов
## В 23 группе 1 фильмов
## В 24 группе 1 фильмов
## В 25 группе 1 фильмов
## В 26 группе 1 фильмов
## В 27 группе 1 фильмов
Снова есть группы, состоящие из 1 фильма, поэтому необходимо отфильтровать языки, на которых доступно очень малое количество фильмов. Данную переменную также стоит вкючить в систему рекомендаций.
Сетевой анализ стран-производителей и компаний-производителей не дал полезных результатов: у первой переменной получилось очень мало групп, между которыми фильмы распределены крайне неравномерно, у второй переменной, наоборот, сообществ слишком много, поэтому адекватной рекомендации не выйдет.
Таким образом, в content-based рекомендательную систему войдут переменные genres и spoken_languages.
Текстовый анализ коснулся следующих переменных:
Мы провели частотный анализ и анализ тональностей, выделили биграммы и разбили текст на темы при помощи LDA.
С помощью частотного анализа мы пытались выделить характерные для фильмов разных жанров слова, но результаты оказались не особенно содержательными: самые частотные слова в некоторых жанрах совпадают, но контекст, в котором они употребляются, разный. Если использовать эти слова, например, при построении content-based системы, то пользователь может получить некачественную рекомендацию.
Результаты сентимент-анализа и выделенные биграммы тоже оказались неинформативными, поэтому мы не использовали их при построении рекомендательной системы.
Однако LDA анализ оказался полезен нам, но не для рекомендательной системы, а для решения проблемы “холодного старта”. Далее немного подробнее об этом анализе.
Теперь сделаем некоторые предположения по пяти топикам.
Посмотрим на третью тему. Похоже, что она выделила фильмы, связанные с пришельцами и космосом(star, earth, planet, alien)
4 - семья
5 - бандитские фильмы про гангстеров (prison, fight, money, friends, buried, death)
6 - школа, необычные существа(Франкенштейн, Бэтмен)
7 - триллеры и детективы
8 - Путешествия и приключения
Таким образом, темы, которые мы получили с помощью LDA, мы решили применить в случае «холодного старта»: если пользователю не знаком или не нравится ни один фильм из нашей базы, он может выбрать интересную ему тему.
Стоит отметить, что выделенные нами темы в связи с несовершенством алгоритма LDA и относительно небольшим объёмом фильмов являются условными.
Может возникнуть вопрос: зачем применять разбиение по темам, если есть жанры, но суть в том, что жанры не всегда отражают тематику фильма. Например, и фильм про инопланетян, и фильм про ограбление может быть отнесён к жанру “Action”.
Также помимо сетевого и текстового анализа мы изучили остальные переменные иными способами, и здесь мы подробнее поговорим о результатах, которые так или иначе повлияли на нашу итоговую систему.
Мы решили привлечь дополнительные данные про актёров, режиссёров и остальных членов команды.
Чтобы понять, помогут ли нам актёры и режиссёры при построении рекомендательной системы, мы решили построить регрессионное дерево, предсказывающее значение переменной rating в зависимости от актёров и режиссёров.
Оценим точность дерева на тестовой выборке методом объяснённой дисперсии и, если не получится, методом подсчёта средней абсолюной процентной ошибки.
## [1] -0.5298759
Возможно, модель нам не подходит, но можно попробовать измерить ещё один показатель - MAPE(mean absolute percentage error). Если 1-MAPE окажется высоким, то модель всё-таки подойдёт.
## [1] 0.8656396
Таким образом прогноз точен, поэтому мы можем использовать актёров для построения рекомендательной системы.
Оценим точность дерева тем же методом.
## [1] -1.246122
Приблизительно такие же результаты при проверке R^2. Посчитаем 1-MAPE.
## [1] 0.8395627
Прогноз так же точен, поэтому режиссеров мы также можем использовать для построения рекомендательной системы.
Оценим точность дерева.
## [1] -1.204078
Также получаем схожие результаты при проверке R^2. Посчитаем 1-MAPE.
## [1] 0.8332968
Точность немного выше, чем если брать просто режиссёров, и немного ниже, чем если брать просто актёров. Тем не менее, опросив друзей и членов семьи, мы узнали, что большинство из них скорее смотрели бы и на актёра, и на режиссёра, выбирая фильм, поэтому остановимся на актёрах и режиссёрах.
Таким образом благодаря проведенному анализу мы выяснили, что полезными для рекомендаельной системы окажутся переменные актеров, режиссеров, жанров и доступных языков фильма. О самой рекомендательной системе поговорим чуть позже.
Как мы видим, на многих языках доступно очень малое количество фильмов, что еще раз сигнализирует о том, что необходимо провести фильтрацию данных.
Здесь мы переходим к частям нашего отчета, в которых будут представлены рекомендательные системы, примеры их работы на основе некоторых функций и их оценка.
Входные данные: id пользователя
Здесь мы строим рекомендательную систему, указывая число 10, как минимальное количество оценок, которые поставил каждый пользователь и которые получил каждый фильм. Далее мы указываем параметр goodRating = 4, что говорит о том, что рекомендательная система не будет предлагать пользователю фильмы, рейтинг которых ниже 4. Также мы делим датасет на тестовую и обучающую выборку и находим метрики отклонения модели.| x | |
|---|---|
| RMSE | 1.414626 |
| MSE | 2.001168 |
| MAE | 1.083945 |
Метрики MAE и RMSE достаточно низкие, что хорошо, но не настолько, чтобы ими пренебречь. Так как RMSE и MAE ~1.8 и ~1.4 соответственно, утверждаем, что наша система может иногда выдавать неточные рекомендации.
Входные данные: id пользователя
Здесь мы строим рекомендательную систему, указывая те же парметры, что в способе IBCF (число 10, как минимальное количество оценок, которые поставил каждый пользователь и которые получил каждый фильм; goodRating = 4, как минимальная оценка предлагаемого системой фильма; и мы также делим датасет на тестовую и обучающую выборку и находим метрики отклонения модели).| x | |
|---|---|
| RMSE | 0.9970621 |
| MSE | 0.9941328 |
| MAE | 0.7799917 |
Все параметры ошибок этой модели ниже чем параметры модели, построенной методом IBCF. Таким образом, эта модель точнее, и мы будем использовать именно ее.
Здесь мы создадим функцию, основанную на рекомендательной системе, а также на некоторых примерах проверим качество ее работы.
Рассмотрим работу функции на примере пользователя 270124. Предложим данному пользователю 5 фильмов, которые наилучшим образом подходят его предпочтениям.| x |
|---|
| Sleepless in Seattle |
| 5 Card Stud |
| Under the Sand |
| A Woman, a Gun and a Noodle Shop |
| Men in Black II |
Оценим полученную модель и результаты ее рекомендации с помощью общего принципа.
| x |
|---|
| Sleepless in Seattle |
| 5 Card Stud |
| Under the Sand |
| A Woman, a Gun and a Noodle Shop |
| Men in Black II |
| genres_sep | n | prop |
|---|---|---|
| Action | 5 | 0.2631579 |
| Science Fiction | 3 | 0.1578947 |
| Thriller | 3 | 0.1578947 |
| Drama | 2 | 0.1052632 |
| Adventure | 2 | 0.1052632 |
| Horror | 1 | 0.0526316 |
| Crime | 1 | 0.0526316 |
| Comedy | 1 | 0.0526316 |
| Fantasy | 1 | 0.0526316 |
| genres_sep | n | prop |
|---|---|---|
| Drama | 3 | 0.2000000 |
| Comedy | 3 | 0.2000000 |
| Action | 2 | 0.1333333 |
| Thriller | 2 | 0.1333333 |
| Science Fiction | 1 | 0.0666667 |
| Western | 1 | 0.0666667 |
| Adventure | 1 | 0.0666667 |
| Romance | 1 | 0.0666667 |
| Mystery | 1 | 0.0666667 |
Жанры драма, триллер и боевик в нашей можели совпадают с теми жанрами фильмов, которые пользователь высоко оценил. Однако, есть и существенные различия, например, один из самых любимых жанров пользователя - научная фантастика, отсутствует среди рекомендованых нами. Таким образом, данна система не идеальна, но вполне может подобрать фильмы, которые бы были интересны пользователю.
Здесь мы создим нашу рекомендательную систему, основанную на результатах нашего разведочного анализа, нашем пользовательском опыте, а также опыте опрошенных нами людей. Таким образом наша рекомендательная система основывается на 4 переменных: жанр, актеры, режиссер, доступный язык. Также мы удалим те фильмы, которые доступны для просмотра менне чем на трех языках, и те, которые не имеют информацию об актерах или режиссере.
После построения рекомендательной системы нам необходимо рассмотреть сценарии ее применения. Таким образом, далее мы продемонстрируем работу функций, работающих с нашей системой, но основывающихся на разных входных данных.
Входные данные: любимый и нелюбимый фильм пользователя
Пользователю будут предложены фильмы, максимально похожие на его любимый, и если среди них есть фильмы, схожие с его нелюбимым, то они выводиться не будут. А если фильм, который пользователю не нравится, очень похож на тот, который ему нравится, то ему будет предложено попробовать ввести другие фильмы.
Пример работы Посмотрим рекомендацию для юзера 132310. Найдём его любимый и нелюбимый фильм и посоветуем ему другие.| title |
|---|
| Hard Target |
| Rope |
| Secret Agent |
| The Thirteenth Floor |
| Terminator 3: Rise of the Machines |
| title | genres | original_language | actor | director_name |
|---|---|---|---|---|
| Hard Target | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Jean-Claude Van Damme | John Woo |
| Hard Target | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Arnold Vosloo | John Woo |
| Hard Target | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Lance Henriksen | John Woo |
| Hard Target | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Yancy Butler | John Woo |
| Hard Target | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Sven-Ole Thorsen | John Woo |
| Rope | [{‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | James Stewart | Alfred Hitchcock |
| Rope | [{‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | John Dall | Alfred Hitchcock |
| Rope | [{‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Farley Granger | Alfred Hitchcock |
| Rope | [{‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Constance Collier | Alfred Hitchcock |
| Rope | [{‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Douglas Dick | Alfred Hitchcock |
| Secret Agent | [{‘id’: 53, ‘name’: ‘Thriller’}] | en | John Gielgud | Alfred Hitchcock |
| Secret Agent | [{‘id’: 53, ‘name’: ‘Thriller’}] | en | Peter Lorre | Alfred Hitchcock |
| Secret Agent | [{‘id’: 53, ‘name’: ‘Thriller’}] | en | Madeleine Carroll | Alfred Hitchcock |
| Secret Agent | [{‘id’: 53, ‘name’: ‘Thriller’}] | en | Robert Young | Alfred Hitchcock |
| Secret Agent | [{‘id’: 53, ‘name’: ‘Thriller’}] | en | Percy Marmont | Alfred Hitchcock |
| The Thirteenth Floor | [{‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Craig Bierko | Josef Rusnak |
| The Thirteenth Floor | [{‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Armin Mueller-Stahl | Josef Rusnak |
| The Thirteenth Floor | [{‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Gretchen Mol | Josef Rusnak |
| The Thirteenth Floor | [{‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Vincent D’Onofrio | Josef Rusnak |
| The Thirteenth Floor | [{‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Dennis Haysbert | Josef Rusnak |
| Terminator 3: Rise of the Machines | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}] | en | Arnold Schwarzenegger | Jonathan Mostow |
| Terminator 3: Rise of the Machines | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}] | en | Nick Stahl | Jonathan Mostow |
| Terminator 3: Rise of the Machines | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}] | en | Claire Danes | Jonathan Mostow |
| Terminator 3: Rise of the Machines | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}] | en | Kristanna Loken | Jonathan Mostow |
| Terminator 3: Rise of the Machines | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}] | en | David Andrews | Jonathan Mostow |
| title | genres | original_language | actor | director_name |
|---|---|---|---|---|
| The 39 Steps | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Robert Donat | Alfred Hitchcock |
| The 39 Steps | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Madeleine Carroll | Alfred Hitchcock |
| The 39 Steps | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Lucie Mannheim | Alfred Hitchcock |
| The 39 Steps | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Godfrey Tearle | Alfred Hitchcock |
| The 39 Steps | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Peggy Ashcroft | Alfred Hitchcock |
| title | genres | original_language | actor | director_name |
|---|---|---|---|---|
| 28 Weeks Later | [{‘id’: 27, ‘name’: ‘Horror’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}] | en | Imogen Poots | Juan Carlos Fresnadillo |
| 28 Weeks Later | [{‘id’: 27, ‘name’: ‘Horror’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}] | en | Robert Carlyle | Juan Carlos Fresnadillo |
| 28 Weeks Later | [{‘id’: 27, ‘name’: ‘Horror’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}] | en | Rose Byrne | Juan Carlos Fresnadillo |
| 28 Weeks Later | [{‘id’: 27, ‘name’: ‘Horror’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}] | en | Jeremy Renner | Juan Carlos Fresnadillo |
| 28 Weeks Later | [{‘id’: 27, ‘name’: ‘Horror’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 878, ‘name’: ‘Science Fiction’}] | en | Harold Perrineau | Juan Carlos Fresnadillo |
Есть ли совпадения с любимым фильмом?
## [1] "Madeleine Carroll"
## [1] "Alfred Hitchcock"
## [1] "en"
Совпадает один режиссёр (Alfred Hitchcock), одна актриса (Madeleine Carroll) и язык (en).
Посмотрим на нелюбимый фильм.
## character(0)
## character(0)
## [1] "en"
Совпадает только язык.
Входные данные: n любимых фильмов пользователя
Пользователь должен создать сет из своих любимых фильмов, указать, какое количество он ввёл и указать, сколько рекомендаций он хочет получить. Изначально пользователь должен был ввести 5 фильмов, но в peer review нам неоднократно намекнули, что это очень много, поэтому мы изменили функцию так, чтобы пользователь сам определял, сколько фильмов он хочет ввести. Пользователю будет предложено выбранное им количество фильмов, максимально похожих на его любимые.
Проверим систему. Введём фильмы “The Sixth Sense”, “Die Hard”,“Die Hard 2”,“Saw II”.| title |
|---|
| Dawn of the Dead |
| The Bourne Supremacy |
| The Village |
| My Name Is Bruce |
| Within the Woods |
Все рекомендованные фильмы оказались ужастиками или триллерами.
Проверим рекомендации второй системы для того же юзера, на котором проверяли работу первой функции. Допустим, он ввёл 5 фильмов (Cutthroat Island, Three Colors: Red, Judgement Night, The 39 Steps, Bollywood/Hollywood) и хочет получить 5 рекомендаций. Посмотрим на рекомендованные ему фильмы.
| title | genres | original_language | actor | director_name |
|---|---|---|---|---|
| Hard Target | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Jean-Claude Van Damme | John Woo |
| Hard Target | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Arnold Vosloo | John Woo |
| Hard Target | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Lance Henriksen | John Woo |
| Hard Target | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Yancy Butler | John Woo |
| Hard Target | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Sven-Ole Thorsen | John Woo |
| Secret Agent | [{‘id’: 53, ‘name’: ‘Thriller’}] | en | John Gielgud | Alfred Hitchcock |
| Secret Agent | [{‘id’: 53, ‘name’: ‘Thriller’}] | en | Peter Lorre | Alfred Hitchcock |
| Secret Agent | [{‘id’: 53, ‘name’: ‘Thriller’}] | en | Madeleine Carroll | Alfred Hitchcock |
| Secret Agent | [{‘id’: 53, ‘name’: ‘Thriller’}] | en | Robert Young | Alfred Hitchcock |
| Secret Agent | [{‘id’: 53, ‘name’: ‘Thriller’}] | en | Percy Marmont | Alfred Hitchcock |
| Indochine | [{‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | fr | Catherine Deneuve | Régis Wargnier |
| Indochine | [{‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | fr | Vincent Pérez | Régis Wargnier |
| Indochine | [{‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | fr | Linh Đan Phạm | Régis Wargnier |
| Indochine | [{‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | fr | Jean Yanne | Régis Wargnier |
| Indochine | [{‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | fr | Dominique Blanc | Régis Wargnier |
| Point Break | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 80, ‘name’: ‘Crime’}] | en | Patrick Swayze | Kathryn Bigelow |
| Point Break | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 80, ‘name’: ‘Crime’}] | en | Keanu Reeves | Kathryn Bigelow |
| Point Break | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 80, ‘name’: ‘Crime’}] | en | Gary Busey | Kathryn Bigelow |
| Point Break | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 80, ‘name’: ‘Crime’}] | en | Lori Petty | Kathryn Bigelow |
| Point Break | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 80, ‘name’: ‘Crime’}] | en | John C. McGinley | Kathryn Bigelow |
| Bullitt | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Steve McQueen | Peter Yates |
| Bullitt | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Robert Vaughn | Peter Yates |
| Bullitt | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Jacqueline Bisset | Peter Yates |
| Bullitt | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Don Gordon | Peter Yates |
| Bullitt | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 80, ‘name’: ‘Crime’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 53, ‘name’: ‘Thriller’}] | en | Robert Duvall | Peter Yates |
| title | genres | original_language | actor | director_name |
|---|---|---|---|---|
| Cutthroat Island | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}] | en | Geena Davis | Renny Harlin |
| Cutthroat Island | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}] | en | Matthew Modine | Renny Harlin |
| Cutthroat Island | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}] | en | Frank Langella | Renny Harlin |
| Cutthroat Island | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}] | en | Maury Chaykin | Renny Harlin |
| Cutthroat Island | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 12, ‘name’: ‘Adventure’}] | en | Patrick Malahide | Renny Harlin |
| Three Colors: Red | [{‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 10749, ‘name’: ‘Romance’}] | fr | Irène Jacob | Krzysztof Kieślowski |
| Three Colors: Red | [{‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 10749, ‘name’: ‘Romance’}] | fr | Jean-Louis Trintignant | Krzysztof Kieślowski |
| Three Colors: Red | [{‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 10749, ‘name’: ‘Romance’}] | fr | Jean-Pierre Lorit | Krzysztof Kieślowski |
| Three Colors: Red | [{‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 10749, ‘name’: ‘Romance’}] | fr | Frédérique Feder | Krzysztof Kieślowski |
| Three Colors: Red | [{‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 10749, ‘name’: ‘Romance’}] | fr | Samuel Le Bihan | Krzysztof Kieślowski |
| Judgment Night | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 80, ‘name’: ‘Crime’}] | en | Emilio Estevez | Stephen Hopkins |
| Judgment Night | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 80, ‘name’: ‘Crime’}] | en | Cuba Gooding Jr. | Stephen Hopkins |
| Judgment Night | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 80, ‘name’: ‘Crime’}] | en | Denis Leary | Stephen Hopkins |
| Judgment Night | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 80, ‘name’: ‘Crime’}] | en | Jeremy Piven | Stephen Hopkins |
| Judgment Night | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 80, ‘name’: ‘Crime’}] | en | Peter Greene | Stephen Hopkins |
| The 39 Steps | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Robert Donat | Alfred Hitchcock |
| The 39 Steps | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Madeleine Carroll | Alfred Hitchcock |
| The 39 Steps | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Lucie Mannheim | Alfred Hitchcock |
| The 39 Steps | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Godfrey Tearle | Alfred Hitchcock |
| The 39 Steps | [{‘id’: 28, ‘name’: ‘Action’}, {‘id’: 53, ‘name’: ‘Thriller’}, {‘id’: 9648, ‘name’: ‘Mystery’}] | en | Peggy Ashcroft | Alfred Hitchcock |
| Bollywood/Hollywood | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10402, ‘name’: ‘Music’}, {‘id’: 10749, ‘name’: ‘Romance’}] | en | Rahul Khanna | Deepa Mehta |
| Bollywood/Hollywood | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10402, ‘name’: ‘Music’}, {‘id’: 10749, ‘name’: ‘Romance’}] | en | Lisa Ray | Deepa Mehta |
| Bollywood/Hollywood | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10402, ‘name’: ‘Music’}, {‘id’: 10749, ‘name’: ‘Romance’}] | en | Moushumi Chatterjee | Deepa Mehta |
| Bollywood/Hollywood | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10402, ‘name’: ‘Music’}, {‘id’: 10749, ‘name’: ‘Romance’}] | en | Dina Pathak | Deepa Mehta |
| Bollywood/Hollywood | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10402, ‘name’: ‘Music’}, {‘id’: 10749, ‘name’: ‘Romance’}] | en | Kulbhushan Kharbanda | Deepa Mehta |
## [1] "Madeleine Carroll"
## [1] Alfred Hitchcock
## 85929 Levels: 'Evil' Ted Smith Faris Kermani ... Ярослав Чеважевский
## [1] "en" "fr"
Совпала актриса (Madeleine Carroll), режиссёр (Alfred Hithchcock), два языка (en, fr).
Что будет, если ввести фильм не из базы?
Введём фильмы “The Sixth Sense”, “kek”,“lol”,“Saw II”. [1] “Фильма номер 2 нет в базе, введите другой фильм” [1] “Фильма номер 3 нет в базе, введите другой фильм”
Пользователь может заменить эти фильмы или просто ввести меньше фильмов.
Для начала хотелось бы отметить, что многие заданные нам вопросы относятся к коду. В связи с ограниченным временем мы не могли осветить все технические подробности и презентовали в основном результаты нашего анализа.
| movieId | title | original_language | genres | director_name |
|---|---|---|---|---|
| 2064 | While You Were Sleeping | en | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Jon Turteltaub |
| 2058 | Addicted to Love | en | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Griffin Dunne |
| 2028 | Say Anything… | en | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Cameron Crowe |
| 2565 | Joe Versus the Volcano | en | [{‘id’: 14, ‘name’: ‘Fantasy’}, {‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 878, ‘name’: ‘Science Fiction’}, {‘id’: 10749, ‘name’: ‘Romance’}] | John Patrick Shanley |
| 74458 | Mere Brother Ki Dulhan | hi | [{‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Ali Zafar |
| actor | movieId | title | original_language | genres | director_name |
|---|---|---|---|---|---|
| Bill Pullman | 858 | Sleepless in Seattle | en | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Nora Ephron |
| Meg Ryan | 858 | Sleepless in Seattle | en | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Nora Ephron |
| Tom Hanks | 858 | Sleepless in Seattle | en | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Nora Ephron |
| Meg Ryan | 858 | Sleepless in Seattle | en | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Nora Ephron |
| director_name | movieId | title | original_language | genres | actor |
|---|---|---|---|---|---|
| original_language | movieId | title | genres | director_name | actor |
|---|---|---|---|---|---|
| en | 858 | Sleepless in Seattle | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Nora Ephron | Tom Hanks |
| en | 858 | Sleepless in Seattle | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Nora Ephron | Meg Ryan |
| en | 858 | Sleepless in Seattle | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Nora Ephron | Bill Pullman |
| en | 858 | Sleepless in Seattle | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Nora Ephron | Ross Malinger |
| en | 858 | Sleepless in Seattle | [{‘id’: 35, ‘name’: ‘Comedy’}, {‘id’: 18, ‘name’: ‘Drama’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Nora Ephron | Rosie O’Donnell |
Было рекомендовано 5 фильмов. Фильм “Sleepless in Seattle” является не только romance, но ещё и drama, comedy. Фильм “Interview with the Vampire” это ещё и horror. В рекомендациях нет ни одного фильма жанра horror. 4 актёра из любимого фильма пользователя есть в рекомендованных фильмах. Директора не совпали. Язык оригинала, английский, совпал.
Проверим нелюбимый фильм.| actor | movieId | title | original_language | genres | director_name |
|---|---|---|---|---|---|
| director_name | movieId | title | original_language | genres | actor |
|---|---|---|---|---|---|
| original_language | movieId | title | genres | director_name | actor |
|---|---|---|---|---|---|
| en | 628 | Interview with the Vampire | [{‘id’: 27, ‘name’: ‘Horror’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Neil Jordan | Brad Pitt |
| en | 628 | Interview with the Vampire | [{‘id’: 27, ‘name’: ‘Horror’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Neil Jordan | Tom Cruise |
| en | 628 | Interview with the Vampire | [{‘id’: 27, ‘name’: ‘Horror’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Neil Jordan | Kirsten Dunst |
| en | 628 | Interview with the Vampire | [{‘id’: 27, ‘name’: ‘Horror’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Neil Jordan | Antonio Banderas |
| en | 628 | Interview with the Vampire | [{‘id’: 27, ‘name’: ‘Horror’}, {‘id’: 10749, ‘name’: ‘Romance’}] | Neil Jordan | Christian Slater |
Не совпало ничего, кроме языка (английский, неудивительно) и жанра romance.
Именно поэтому мы и выбрали несколько параметров, по которым составляется рекомендация: чтобы лучше выявить вкусы пользователя. Да, жанры любимого и нелюбимого фильма совпадают, но благодаря другим характеристикам рекомендация всё же даётся.
| movieId | title | original_language | genres | director_name | actor |
|---|---|---|---|---|---|
| 345 | Eyes Wide Shut | en | [{‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 18, ‘name’: ‘Drama’}] | Stanley Kubrick | Tom Cruise |
| 345 | Eyes Wide Shut | en | [{‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 18, ‘name’: ‘Drama’}] | Stanley Kubrick | Nicole Kidman |
| 345 | Eyes Wide Shut | en | [{‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 18, ‘name’: ‘Drama’}] | Stanley Kubrick | Madison Eginton |
| 345 | Eyes Wide Shut | en | [{‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 18, ‘name’: ‘Drama’}] | Stanley Kubrick | Jackie Sawiris |
| 345 | Eyes Wide Shut | en | [{‘id’: 9648, ‘name’: ‘Mystery’}, {‘id’: 18, ‘name’: ‘Drama’}] | Stanley Kubrick | Sydney Pollack |
Если пользователь запросит 6 и более рекомендаций, там будет и фильм Stanley Kubrick. Тем не менее, мы согласны, что это будет неудобно пользователю, который при выборе фильма ориентируется только на режиссёра фильма, но мы полагаем, что таких не большинство(по опросу членов нашей команды и наших семей).
| title |
|---|
| The Third Man |
| title |
|---|
| Hard Target |
| Escape from New York |
| Star Wars: Episode II - Attack of the Clones |
| Men in Black II |
| X-Men Origins: Wolverine |
В полученных рекомендациях есть второй фильм — «Star Wars: Episode II - Attack of the Clones».
Возьмём пользователя 10293, который оценил на 5 единственный фильм режиссуры Тарантино в нашем датасете.
Посмотрим на его любимые фильмы.| title |
|---|
| Back to the Future |
| Back to the Future Part III |
| Galaxy Quest |
| The Talented Mr. Ripley |
| Ocean’s Twelve |